
package com.ys.chatserver.http.file.u;

import com.eva.framework.utils.LoggerFactory;
import com.ys.chatserver.BaseConf;

import java.io.File;
import java.util.HashMap;

/**
 * 我的语音介绍中的音频文件上传处理实现类。
 *
 * @author Json
 */
public class MyVoiceUploader extends UploaderRoot {
    @Override
    protected String getFileSaveDir() {
        return BaseConf.getInstance().getDIR_USER_PVOICE_UPLOAD();
    }

    @Override
    protected void onUploadSucess(HashMap<String, Object> parametersFromClient) throws Exception {
        String userUid = (String) parametersFromClient.get("user_uid");
        // 因为服务端是支持多文件上传的API，所以客户端单独把文件名带过来了，方便使用！
        String fileName = (String) parametersFromClient.get("file_name");
        // 客户端传过来的token，用于请求的合法性检查，当前未作强制检查，留作以后使用
        String token = (String) parametersFromClient.get("token");

        LoggerFactory.getLog().debug("[" + getDebugTAG() + "] 用户" + userUid + "的语音介绍文件" + fileName
                + "数据上传成功，马上处理其它业务逻辑...(token=" + token + ")");

        // 客户端传过来的数据（参数）的合法性检查
        if (userUid != null && fileName != null) {
            String uploadPath = getFileSaveDir();
            // 图片文件已经保存到的磁盘绝对路径
            File filePath = new File(uploadPath + File.separator + fileName);

            if (filePath.exists()) {
                // 如果上传的是用户自我介绍语音文件，则同时要插入一条数据到db中
            } else {
                LoggerFactory.getLog().error("[" + getDebugTAG() + "] 用户" + userUid + "的语音介绍文件"
                        + fileName + "为何不存在？(绝对路径=" + filePath.getAbsolutePath() + ")");
            }
        } else {
            throw new Exception("[" + getDebugTAG() + "] 无效的参数：userUid=" + userUid + ", fileName=" + fileName + ".");
        }
    }

    @Override
    protected void onUploadFailure(Exception ex) {
        LoggerFactory.getLog().error("[" + getDebugTAG() + "] 处理语音介绍文件上传时出错了，" + ex.getMessage(), ex);
    }

    @Override
    protected String getDebugTAG() {
        return "HTTP语音介绍";
    }
}